commonlibsse_ng\re\i/
IUIMessageData.rs

1use crate::re::offsets_rtti::RTTI_IUIMessageData;
2use crate::re::offsets_vtable::VTABLE_IUIMessageData;
3use crate::rel::id::VariantID;
4use core::ffi::c_void;
5
6#[repr(C)]
7#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
8pub struct IUIMessageData {
9    pub vtable: *const IUIMessageDataVtbl, // 0x00
10    unk08: u16,                            // 0x08
11    unk0A: u16,                            // 0x0A
12    unk0C: u32,                            // 0x0C
13}
14const _: () = assert!(core::mem::size_of::<IUIMessageData>() == 0x10);
15
16impl Default for IUIMessageData {
17    #[inline]
18    fn default() -> Self {
19        Self::new()
20    }
21}
22
23impl IUIMessageData {
24    /// Address & Offset of the runtime type information (RTTI) identifier.
25    pub const RTTI: VariantID = RTTI_IUIMessageData;
26
27    /// Address & Offset of the virtual function table.
28    pub const VTABLE: [VariantID; 1] = VTABLE_IUIMessageData;
29
30    /// Creates a new `IUIMessageData` with default values.
31    #[inline]
32    pub const fn new() -> Self {
33        Self { vtable: &HK_BASE_OBJECT_VTBL, unk08: 0, unk0A: 0, unk0C: 0 }
34    }
35}
36
37pub struct IUIMessageDataVtbl {
38    /// Destructor for `IUIMessageData` (represented as a virtual method in C++).
39    pub CxxDrop: unsafe extern "C" fn(this: *mut c_void),
40}
41impl IUIMessageDataVtbl {
42    const fn new() -> Self {
43        const unsafe extern "C" fn CxxDrop(_this: *mut c_void) {}
44
45        Self { CxxDrop }
46    }
47}
48
49static HK_BASE_OBJECT_VTBL: IUIMessageDataVtbl = IUIMessageDataVtbl::new();